#ifndef FDEB_EDGE_H
#define FDEB_EDGE_H

#include "FDEBUtils.h"
#include "GraphData.h"
#include <vector>

class FDEBEdge {
public:
    FPoint source;
    FPoint target;
    std::vector<FPoint> subdivisionPoints;
    std::vector<FDEBEdge*> compatibilityList;

    FDEBEdge(const FPoint& source, const FPoint& target);

    // 初始化 subdivisionPoints，包含 P 个插值点，加上首尾共 P+2 个点
    void initializeSubdivisionPoints(int P);

    // 每条线段细分为两个，并插入中点
    void refineSubdivisionPoints();
};

// 构建 FDEBEdge 列表
std::vector<FDEBEdge> buildFDEBEdges(
    const std::vector<Edge>& rawEdges,
    const std::vector<Node>& rawNodes,
    int P = 1
);

#endif // FDEB_EDGE_H
